Git之不明觉厉7-大挪移rebase

您所在的位置:网站首页 git rebase Git之不明觉厉7-大挪移rebase

Git之不明觉厉7-大挪移rebase

2022-12-27 21:47| 来源: 网络整理| 查看: 265

我们来看看rebase这个命令,有可能这是我们使用最多的命令哦。rebase和merge命令都可以合并branch,一般来说rebase比merge好,我们来看看merge产生的commits。这次我们用sourcetree来看看log

source tree

可以发现merge产生的commits是合并的,这个合并的commit其实没有什么用处。我们看看rebase是怎么工作的吧。

理解rebase

rebase字面意思当前的commit换一个基地

rebase的情况

当上图绿色branch调用rebase的时候,表示绿色的两个commit暂时被移除,因为他要换一个基地吗,注意紫色的叉叉。

那么新的基地在哪里呢?看看下图

新的基地

merge是什么情况呢? 可以看到merge产生了一个没用的merge commit

merge的情况

可以看到,rebase的英文意思已经说明了意思,可见英文好是很重要的。

rebase可以合并commit

另一个很好用的功能是用来合并commit,我们新建一个branch,然后增加三个commit如下图

相同意义的commit

看看怎么合并

git rebase -i HEAD~3

这个命令会弹出一个编辑器,让我们编辑commit

rebase -i

命令成功以后,三个commit合并成一个了。

Paste_Image.png rebase可以用来修改commit信息

我们知道git commit --amend -m "i change you" 可以对最近的一条commit做修改,那么以前的commit怎么办呢,我们可以用下面这个命令改动最近3条commit的信息。

git rebase -i HEAD~3

按照下图提示,使用reword命令就可以了

Paste_Image.png

保存以后还会弹出一个框,让我们修改message,保存就可以了。

rebase 可以用来拆分commit

有的时候,我们经常很懒一下次提交很多内容,然后有后悔,毕竟提交的信息别人能看到,不讲究不行啊。如果我们想拆分一个大的commit到小的几个commit,怎么做呢。

先初始化一下文件吧 echo "split file 1" > split.txt echo "split file 2" > split2.txt git add -A git ci -am "one commit"

现在我们要把最近的一个commit拆成两个,分别提交。

git rebase -i HEAD^ rebase -i 拆分成两个commit

最后我们修改完了,再调用

git rebase --continue 什么时候不要用rebase

rebase虽然好,但是不要滥用啊,一个黄金法则就是

never use it on public branches. 不要在公共的branch上用

改变master branch的历史。

Paste_Image.png

这样有没有发现自己的master和别人的都不一样(这里的不一样是指同名的commit hash值确不一样),下次你push的时候就需要merge了,多余的commit也会显示出你是一个菜鸟,因为会有同名的commit被merge到一起。嘿嘿。 提示:完成这个例子需要在master branch上调用git rebase。

git push --force 如何遇到上面的那个情况,可以用这个命令把自己的master强行推到远程,这样你省事了,其他队友都傻了。不过如果你的branch是自己在用,并且推送到远程保存了,然后自己又清理了一下commit这样用还是可以的。总之确保你rebase的branch没人在用。 rebase的参数顺序问题

说了这么多,我们可能有点疑惑,到底rebase which branch onto which branch?我们有必要搞清楚参数含义

git rebase 啥参数没有,表示把自己和upstream之间不同的commit,盖到upstream的头上。自己的commit在最上面。 git rebase John/Feature,把自己盖到John/Feature上面


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3